<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>手写promise</title>
</head>
<body>
    <script src="./HD.js"></script>
    <script>
        // let promise = new Hd((resolve,reject) => {
        //     setTimeout(() => {
        //         // resolve("解决");
        //         reject("失败");
        //         console.log("哈哈哈")
        //     },2000);            
        // })
        // .then(
        //     value => {
        //         console.log(value);
        //     },
        //     reason => {
        //         console.log(reason);
        //         // return "fdasd";
        //         return new Hd((resolve,reject) => {
        //             // resolve('呵呵呵');
        //             reject('呵呵呵');
        //         });
        //     }
        // )
        // .then(
        //     value => {
        //         console.log('success' + value);
        //     },
        //     reason => {
        //         console.log('fail' + reason);
        //     }
        // );

        // 不可以调用自己
        // let p = promise.then(value => {
        //     return p;
        // })

        // Hd.resolve(new Hd((resolve,reject) => {
        //     reject('失败了');
        // }))
        // .then(
        //     value => {
        //         console.log(value);
        //     },
        //     reason => {
        //         console.log(reason);
        //     }
        // )

        // Hd.reject('错误')
        // .then(
        //     null,
        //     reason => {
        //         console.log(reason);
        //     }
        // )

        let h1 = new Hd(resolve => {
            resolve("后盾人");
        });

        let h2 = new Hd((resolve,reject) => {
            resolve("xiaxia");
            reject('aaa');
        });

        Hd.all([h1,h2]).then(
            value => {
                console.log(value);
            },
            reason => {
                console.log(reason);
            }
        );

        let h3 = new Hd(resolve => {
            setTimeout(() => {
                resolve("后盾人");
            },3000)
        });

        let h4 = new Hd((resolve,reject) => {
            setTimeout(() => {
                // resolve("xiaxia");
                reject('aaa');
            },2000)
        });

        Hd.race([h3,h4]).then(
            value => {
                console.log(value);
            },
            reason => {
                console.log(reason);
            }
        );
    </script>
</body>
</html>